# ble_scan_v0e.py # Erst ESP32 resetten, dann Programm starten # Zu Beginn werden Sie aufgefordert, das Advertising auf dem Handy zu starten # Importe und Konstanten: from ubluetooth import BLE from time import sleep from micropython import const _IRQ_SCAN_RESULT = const(5) _IRQ_SCAN_DONE = const(6) _ADV_TYP_NAME = const(9) # Funktionen: def bt_irq_handler(event, data): if event == _IRQ_SCAN_RESULT: print('-----------------------------------------------------------') global counter counter = counter + 1 print('packet: ', counter) addr_type, addr, adv_type, rssi, adv_data = data # data ist ein Tupel (Adresstyp, Adresse, Verbindungstyp, Signalstärke beim Empfänger, Payload ohne Adresse), vgl. Kapitel 3 print('addr_type: ', addr_type) # vgl. Kapitel 2 print('addr: ', [hex(n) for n in addr]) print('adv_type: ', adv_type) # ADV-Connection-Typ, vgl. Kapitel 3 print('rssi: ', rssi) # Signalstärke des Empfängers in dBm print('adv_data: ', [hex(n) for n in list(bytes(adv_data))]) # Payload (ohne BLE-Adresse) als Liste von Hexadezimalzahlen print('') elif event == _IRQ_SCAN_DONE: # Scan beendet print('-----------------------------------------------------------') print('scan complete') # Hauptptrogramm: print('Starten Sie den Advertiser!') print('Nach 3 Sekunden wird der Scan-Vorgang gestartet...') sleep(3) print('BLE-Scan wird gestartet...\n') counter = 0 bt = BLE() # BLE-Instanz bt erzeugen bt.active(True) # Bluetooth einschalten bt.irq(bt_irq_handler) # die Funktion bt_irq zum Eventhandler irq von bt machen bt.gap_scan(5000, 100000, 25000) sleep(8) bt.active(False) # Bluetooth aus print('Bluetooth deaktiviert')